package com.lancoo.edu.platform.operation.backupRestore.service.po.impl;

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.lancoo.edu.platform.operation.backupRestore.domain.po.BrBackupInfo;
import com.lancoo.edu.platform.operation.backupRestore.service.po.BrBackupInfoService;
import com.lancoo.edu.platform.operation.backupRestore.mapper.BrBackupInfoMapper;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;

import java.util.Date;
import java.util.List;
import java.util.Objects;

/**
* @author Admin
* @description 针对表【br_backup_info(数据备份还原-数据备份记录表)】的数据库操作Service实现
* @createDate 2024-03-25 11:24:25
*/
@Service
public class BrBackupInfoServiceImpl extends ServiceImpl<BrBackupInfoMapper, BrBackupInfo>
    implements BrBackupInfoService{

    /**
     * 获取最近的备份记录列表
     *
     * @param eduId 教育局ID
     * @return 最近的备份记录列表
     */
    @Override
    public List<BrBackupInfo> getRecentlyBackup(String eduId) {
        return baseMapper.getRecentlyBackup(eduId);
    }

    /**
     * 指定备份唯一ID的数据备份记录列表
     *
     * @param eduId       教育局ID
     * @param backupUniqueId 备份唯一ID
     * @return 数据备份记录列表
     */
    @Override
    public List<BrBackupInfo> getListByBackupUniqueId(String eduId, Long backupUniqueId){
        return lambdaQuery()
                .eq(BrBackupInfo::getEduId, eduId)
                .eq(BrBackupInfo::getBackupUniqueId, backupUniqueId)
                .list();

    }

    /**
     * 获取指定大小的备份记录列表
     *
     * @param eduId    教育局ID
     * @param sysId    系统ID
     * @param size     大小
     * @return 备份记录列表
     */
    @Override
    public List<BrBackupInfo> getListBySize(String eduId, String sysId, Integer size){
        return lambdaQuery()
                .eq(StringUtils.isNotBlank(eduId), BrBackupInfo::getEduId, eduId)
                .eq(StringUtils.isNotBlank(sysId), BrBackupInfo::getSysId, sysId)
                .orderByDesc(BrBackupInfo::getBackupTime)
                .last("limit " + size)
                .list();
    }

    /**
     * 时间范围内的，数据备份记录列表
     *
     * @param eduId  教育局ID
     * @param startTime 开始时间
     * @param endTime   结束时间
     * @return 数据备份记录列表
     */
    @Override
    public List<BrBackupInfo> getList(String eduId, Date startTime, Date endTime){
        return lambdaQuery()
                .eq(BrBackupInfo::getEduId, eduId)
                .ge(Objects.nonNull(startTime), BrBackupInfo::getBackupTime, startTime)
                .le(Objects.nonNull(endTime), BrBackupInfo::getBackupTime, endTime)
                .list();
    }

    /**
     * 获取数据备份记录列表
     *
     * @param eduId  教育局ID
     * @param backupType 备份类型，1全部备份，2单个备份
     * @return 数据备份记录列表
     */
    @Override
    public List<BrBackupInfo> getList(String eduId, Integer backupType){
        return lambdaQuery()
                .eq(BrBackupInfo::getEduId, eduId)
                .eq(Objects.nonNull(backupType), BrBackupInfo::getBackupType, backupType)
                .list();
    }

}




